package com.bbzn.device.client.dao.product;

import com.bbzn.device.client.dataobject.Product;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.bbzn.device.client.dto.index.ProductDevCountDTO;
import com.bbzn.device.client.dto.index.WorkSiteDTO;
import com.bbzn.device.client.dto.product.ProductDTO;
import com.bbzn.device.client.dto.product.ProductExistDTO;
import org.apache.ibatis.annotations.Param;

public interface ProductMapper {
    int deleteByPrimaryKey(Long id);

    int insert(Product record);

    int insertOrUpdate(Product record);

    int insertOrUpdateSelective(Product record);

    int insertSelective(Product record);

    Product selectByPrimaryKey(Long id);

    int updateByPrimaryKeySelective(Product record);

    int updateByPrimaryKey(Product record);

    List<Product> findByAll(Product product);

    List<Map<String, Object>> getIndexSelf(@Param("userId") Long userId);

    List<Map<String, Object>> getIndexAssignment(@Param("userId") Long userId);

    List<Map<String, Object>> getIndexOnOffline(@Param("userId") Long userId);

    List<Map<String, Object>> getOnOfflineAssignment(@Param("userId") Long userId);

    List<String> getSelfHatSkus(@Param("userId") Long userId);

    List<String> getAssignmentHatSkus(@Param("userId") Long userId);

    List<Product> selectByAll(Product product);

    int updateBatch(List<Product> list);

    int updateBatchSelective(List<Product> list);

    int batchInsert(@Param("list") List<Product> list);

    /**
     * Web获取产品列表
     *
     * @return
     */
    int getProductListCount(ProductDTO product);

    /**
     * Web获取产品列表
     *
     * @return
     */
    List<Product> getProductList(ProductDTO product);

    /**
     * 查询所有产品下有多少设备
     *
     * @param userIds
     * @return
     */
    List<ProductDevCountDTO> getProductByDevList(@Param("userIds") List<Long> userIds);

    List<ProductExistDTO> findByProducts();
}